<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>bonobo-stream-client</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<link rel="home" href="index.html" title="Libbonobo Reference Manual">
<link rel="up" href="streams.html" title="Storages and Streams">
<link rel="prev" href="libbonobo-bonobo-storage.html" title="bonobo-storage">
<link rel="next" href="persist.html" title="Persistency">
<meta name="generator" content="GTK-Doc V1.15.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
<tr valign="middle">
<td><a accesskey="p" href="libbonobo-bonobo-storage.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
<td><a accesskey="u" href="streams.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">Libbonobo Reference Manual</th>
<td><a accesskey="n" href="persist.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr>
<tr><td colspan="5" class="shortcuts">
<a href="#libbonobo-bonobo-stream-client.synopsis" class="shortcut">Top</a>
                   | 
                  <a href="#libbonobo-bonobo-stream-client.description" class="shortcut">Description</a>
</td></tr>
</table>
<div class="refentry">
<a name="libbonobo-bonobo-stream-client"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="libbonobo-bonobo-stream-client.top_of_page"></a>bonobo-stream-client</span></h2>
<p>bonobo-stream-client — Simplified client wrapper functions for the Stream interface</p>
</td>
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsynopsisdiv">
<a name="libbonobo-bonobo-stream-client.synopsis"></a><h2>Synopsis</h2>
<pre class="synopsis"><span class="returnvalue">void</span>                <a class="link" href="libbonobo-bonobo-stream-client.html#bonobo-stream-client-write" title="bonobo_stream_client_write ()">bonobo_stream_client_write</a>          (<em class="parameter"><code>const <span class="type">Bonobo_Stream</span> stream</code></em>,
                                                         <em class="parameter"><code>const <span class="type">void</span> *buffer</code></em>,
                                                         <em class="parameter"><code>const <span class="type">size_t</span> size</code></em>,
                                                         <em class="parameter"><code><span class="type">CORBA_Environment</span> *ev</code></em>);
<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint8"><span class="returnvalue">guint8</span></a> *            <a class="link" href="libbonobo-bonobo-stream-client.html#bonobo-stream-client-read" title="bonobo_stream_client_read ()">bonobo_stream_client_read</a>           (<em class="parameter"><code>const <span class="type">Bonobo_Stream</span> stream</code></em>,
                                                         <em class="parameter"><code>const <span class="type">size_t</span> size</code></em>,
                                                         <em class="parameter"><code><span class="type">CORBA_long</span> *length_read</code></em>,
                                                         <em class="parameter"><code><span class="type">CORBA_Environment</span> *ev</code></em>);
<span class="returnvalue">void</span>                <a class="link" href="libbonobo-bonobo-stream-client.html#bonobo-stream-client-write-string" title="bonobo_stream_client_write_string ()">bonobo_stream_client_write_string</a>   (<em class="parameter"><code>const <span class="type">Bonobo_Stream</span> stream</code></em>,
                                                         <em class="parameter"><code>const <span class="type">char</span> *str</code></em>,
                                                         <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> terminate</code></em>,
                                                         <em class="parameter"><code><span class="type">CORBA_Environment</span> *ev</code></em>);
<span class="returnvalue">void</span>                <a class="link" href="libbonobo-bonobo-stream-client.html#bonobo-stream-client-printf" title="bonobo_stream_client_printf ()">bonobo_stream_client_printf</a>         (<em class="parameter"><code>const <span class="type">Bonobo_Stream</span> stream</code></em>,
                                                         <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> terminate</code></em>,
                                                         <em class="parameter"><code><span class="type">CORBA_Environment</span> *ev</code></em>,
                                                         <em class="parameter"><code>const <span class="type">char</span> *fmt</code></em>,
                                                         <em class="parameter"><code>...</code></em>);
<span class="returnvalue">CORBA_long</span>          <a class="link" href="libbonobo-bonobo-stream-client.html#bonobo-stream-client-read-string" title="bonobo_stream_client_read_string ()">bonobo_stream_client_read_string</a>    (<em class="parameter"><code>const <span class="type">Bonobo_Stream</span> stream</code></em>,
                                                         <em class="parameter"><code><span class="type">char</span> **str</code></em>,
                                                         <em class="parameter"><code><span class="type">CORBA_Environment</span> *ev</code></em>);
<span class="returnvalue">CORBA_long</span>          <a class="link" href="libbonobo-bonobo-stream-client.html#bonobo-stream-client-get-length" title="bonobo_stream_client_get_length ()">bonobo_stream_client_get_length</a>     (<em class="parameter"><code>const <span class="type">Bonobo_Stream</span> stream</code></em>,
                                                         <em class="parameter"><code><span class="type">CORBA_Environment</span> *ev</code></em>);
</pre>
</div>
<div class="refsect1">
<a name="libbonobo-bonobo-stream-client.description"></a><h2>Description</h2>
<p>
These interfaces are designed to make the stream interface
slightly easier to use from client code. This is done 2 ways,
first by make the exception environments optiional, and secondly
by providing slightly nicer semantics.
</p>
<p>
  </p>
<div class="example">
<a name="id3176143"></a><p class="title"><b>Example 24. Writing some simple data to a stream</b></p>
<div class="example-contents">
  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
    <tbody>
      <tr>
        <td class="listing_lines" align="right"><pre>1</pre></td>
        <td class="listing_code"><pre class="programlisting"><span class="function"><a href="libbonobo-bonobo-stream-client.html#bonobo-stream-client-printf">bonobo_stream_client_printf</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">stream</span><span class="symbol">,</span><span class="normal"> <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS">TRUE</a></span><span class="symbol">,</span><span class="normal"> ev</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"Hello World: %d"</span><span class="symbol">,</span><span class="normal"> </span><span class="number">5</span><span class="symbol">);</span></pre></td>
      </tr>
    </tbody>
  </table>
</div>

</div>
<p><br class="example-break">
  It is well worth using the bonobo_stream_client_write function
for any potentialy large writes, since this blocks the data into
sensible chunks. This is important, otherwise a single transfer is
attempted that will cause hassles in the CORBA stubs. [ NB. ORBit
tries to alloca a huge chunk of memory and SEGVs ].
</p>
</div>
<div class="refsect1">
<a name="libbonobo-bonobo-stream-client.details"></a><h2>Details</h2>
<div class="refsect2">
<a name="bonobo-stream-client-write"></a><h3>bonobo_stream_client_write ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>                bonobo_stream_client_write          (<em class="parameter"><code>const <span class="type">Bonobo_Stream</span> stream</code></em>,
                                                         <em class="parameter"><code>const <span class="type">void</span> *buffer</code></em>,
                                                         <em class="parameter"><code>const <span class="type">size_t</span> size</code></em>,
                                                         <em class="parameter"><code><span class="type">CORBA_Environment</span> *ev</code></em>);</pre>
<p>
This is a helper routine to write <em class="parameter"><code>size</code></em> bytes from <em class="parameter"><code>buffer</code></em> to the
<em class="parameter"><code>stream</code></em>.  It will continue to write bytes until a fatal error
occurs. It works around serious problems in ORBit's handling of
sequences, and makes for nicer, saner protocol usage for
transfering huge chunks of data.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>stream</code></em> :</span></p></td>
<td>A CORBA Object reference to a Bonobo_Stream
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>buffer</code></em> :</span></p></td>
<td>the buffer to write
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>size</code></em> :</span></p></td>
<td>number of bytes to write
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>ev</code></em> :</span></p></td>
<td>a CORBA environment to return status information.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2">
<a name="bonobo-stream-client-read"></a><h3>bonobo_stream_client_read ()</h3>
<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint8"><span class="returnvalue">guint8</span></a> *            bonobo_stream_client_read           (<em class="parameter"><code>const <span class="type">Bonobo_Stream</span> stream</code></em>,
                                                         <em class="parameter"><code>const <span class="type">size_t</span> size</code></em>,
                                                         <em class="parameter"><code><span class="type">CORBA_long</span> *length_read</code></em>,
                                                         <em class="parameter"><code><span class="type">CORBA_Environment</span> *ev</code></em>);</pre>
<p>
This is a helper routine to read <em class="parameter"><code>size</code></em> bytes from the <em class="parameter"><code>stream</code></em> into
a freshly g_ allocated buffer which is returned. Whilst this
routine may seem pointless; it reads the stream in small chunks
avoiding possibly massive alloca's inside ORBit's stub/skel code.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>stream</code></em> :</span></p></td>
<td>A CORBA Object reference to a Bonobo_Stream
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>size</code></em> :</span></p></td>
<td>number of bytes to read or -1 for whole stream.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>length_read</code></em> :</span></p></td>
<td>if non NULL will be set to the length read
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>ev</code></em> :</span></p></td>
<td>a CORBA environment to return status information.
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td>NULL on any sort of failure &amp; 0 size read.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2">
<a name="bonobo-stream-client-write-string"></a><h3>bonobo_stream_client_write_string ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>                bonobo_stream_client_write_string   (<em class="parameter"><code>const <span class="type">Bonobo_Stream</span> stream</code></em>,
                                                         <em class="parameter"><code>const <span class="type">char</span> *str</code></em>,
                                                         <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> terminate</code></em>,
                                                         <em class="parameter"><code><span class="type">CORBA_Environment</span> *ev</code></em>);</pre>
<p>
This is a helper routine to write the string in <em class="parameter"><code>str</code></em> to <em class="parameter"><code>stream</code></em>.
If <em class="parameter"><code>terminate</code></em> is TRUE, a NULL character will be written out at the
end of the string.  This function will not return until the entire
string has been written out, unless an exception is raised.  See
also <a class="link" href="libbonobo-bonobo-stream-client.html#bonobo-stream-client-write" title="bonobo_stream_client_write ()"><code class="function">bonobo_stream_client_write()</code></a>. Continues writing until finished
or a fatal exception occurs.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>stream</code></em> :</span></p></td>
<td>A CORBA object reference to a <span class="type">Bonobo_Stream</span>.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>str</code></em> :</span></p></td>
<td>A string.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>terminate</code></em> :</span></p></td>
<td>Whether or not to write the \0 at the end of the
string.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>ev</code></em> :</span></p></td>
<td>A pointer to a <span class="type">CORBA_Environment</span>
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2">
<a name="bonobo-stream-client-printf"></a><h3>bonobo_stream_client_printf ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>                bonobo_stream_client_printf         (<em class="parameter"><code>const <span class="type">Bonobo_Stream</span> stream</code></em>,
                                                         <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> terminate</code></em>,
                                                         <em class="parameter"><code><span class="type">CORBA_Environment</span> *ev</code></em>,
                                                         <em class="parameter"><code>const <span class="type">char</span> *fmt</code></em>,
                                                         <em class="parameter"><code>...</code></em>);</pre>
<p>
Processes <em class="parameter"><code>fmt</code></em> and the arguments which follow it to produce a
string.  Writes this string out to <em class="parameter"><code>stream</code></em>.  This function will not
return until the entire string is written out, unless an exception
is raised.  See also <a class="link" href="libbonobo-bonobo-stream-client.html#bonobo-stream-client-write-string" title="bonobo_stream_client_write_string ()"><code class="function">bonobo_stream_client_write_string()</code></a> and
<a class="link" href="libbonobo-bonobo-stream-client.html#bonobo-stream-client-write" title="bonobo_stream_client_write ()"><code class="function">bonobo_stream_client_write()</code></a>.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>stream</code></em> :</span></p></td>
<td>A CORBA object reference to a <span class="type">Bonobo_Stream</span>.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>terminate</code></em> :</span></p></td>
<td>Whether or not to null-terminate the string when it is
written out to the stream.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>ev</code></em> :</span></p></td>
<td>A CORBA_Environment pointer.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>fmt</code></em> :</span></p></td>
<td>The printf format string.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td>
<td>format arguments
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2">
<a name="bonobo-stream-client-read-string"></a><h3>bonobo_stream_client_read_string ()</h3>
<pre class="programlisting"><span class="returnvalue">CORBA_long</span>          bonobo_stream_client_read_string    (<em class="parameter"><code>const <span class="type">Bonobo_Stream</span> stream</code></em>,
                                                         <em class="parameter"><code><span class="type">char</span> **str</code></em>,
                                                         <em class="parameter"><code><span class="type">CORBA_Environment</span> *ev</code></em>);</pre>
<p>
Reads a NULL-terminated string from <em class="parameter"><code>stream</code></em> and stores it in a
newly-allocated string in <em class="parameter"><code>str</code></em>.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>stream</code></em> :</span></p></td>
<td>The <span class="type">Bonobo_Stream</span> from which the string will be read.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>str</code></em> :</span></p></td>
<td>The string pointer in which the string will be stored.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>ev</code></em> :</span></p></td>
<td>A pointer to a <span class="type">CORBA_Environment</span>.
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> The number of bytes read, or -1 if an error occurs.
If an exception occurs, <em class="parameter"><code>ev</code></em> will contain the exception.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2">
<a name="bonobo-stream-client-get-length"></a><h3>bonobo_stream_client_get_length ()</h3>
<pre class="programlisting"><span class="returnvalue">CORBA_long</span>          bonobo_stream_client_get_length     (<em class="parameter"><code>const <span class="type">Bonobo_Stream</span> stream</code></em>,
                                                         <em class="parameter"><code><span class="type">CORBA_Environment</span> *ev</code></em>);</pre>
<p>
Does the grunt work to get the length of a stream,
returns -1 if the length is not available. Returns -1
on exception.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>stream</code></em> :</span></p></td>
<td>The stream.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>ev</code></em> :</span></p></td>
<td>Exception environment
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> Length or -1
</td>
</tr>
</tbody>
</table></div>
</div>
</div>
<div class="refsect1">
<a name="libbonobo-bonobo-stream-client.see-also"></a><h2>See Also</h2>
<p>
<span class="type">BonoboStream</span>
</p>
</div>
</div>
<div class="footer">
<hr>
          Generated by GTK-Doc V1.15.1</div>
</body>
</html>